﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using EFDataModel;

namespace ContactManagement.AppCode.HtmlHelperForViews
{
    /// <summary>
    /// Html Helper Klasse für die User
    /// </summary>
    public class UserHtmlHelper
    {
         #region Member
        private readonly HtmlHelper CurrentHtmlHelper;
        #endregion

        #region Konstruktor
        /// <summary>
        /// Konstruktor der HTML Helpers Klasse für die Kategorien. die Statische Klasse zum Instanzieieren findet man in den HtmlHelperExtensions
        /// </summary>
        public UserHtmlHelper(HtmlHelper htmlHelper)
        {
            CurrentHtmlHelper = htmlHelper;
        }
        #endregion

        #region Public Functions
        /// <summary>
        /// Gibt einen einfachen String zurück der die userRights anzeigt, die übergeben wurde,
        /// </summary>
        /// <param name="userRights">Auflistung der UserRights</param>
        /// <returns>String der die Namen der UserRights zurück gibt die hinterlegt wurden</returns>
        public MvcHtmlString ShowUserRights(IEnumerable<UserRight> userRights)
        {
            if (userRights.Count() == 0)
            {
                return MvcHtmlString.Create(App_GlobalResources.SystemMessages.NoUserRightsSetForUserRESX);
            }
            else
            {
                string rights = string.Empty;
                //Alle Rechte durchgehen und einen String zusammenbauen in dem die Rechte enthalten sind.
                foreach (UserRight eUserRight in userRights.OrderBy(p=>p.Name))
                {
                    if (rights.Trim().Length > 0)
                    {
                        rights += " | ";
                    }

                    rights += eUserRight.GetRightName();
                }

                return MvcHtmlString.Create(rights);
            }
        }

        /// <summary>
        /// Gibt einen einfachen String zurück der die userRights anzeigt, die übergeben wurde,
        /// </summary>
        /// <param name="userGroups">Auflistung der UserRights</param>
        /// <returns>String der die Namen der UserRights zurück gibt die hinterlegt wurden</returns>
        public MvcHtmlString ShowUserGroups(IEnumerable<UserGroup> userGroups)
        {
            if (userGroups.Count() == 0)
            {
                return MvcHtmlString.Create(App_GlobalResources.SystemMessages.NoUserGroupsSetForUserRESX);
            }
            else
            {
                string groups = string.Empty;
                //Alle Rechte durchgehen und einen String zusammenbauen in dem die Rechte enthalten sind.
                foreach (UserGroup eUserGroup in userGroups.OrderBy(p=>p.Name))
                {
                    if (groups.Trim().Length > 0)
                    {
                        groups += " | ";
                    }

                    groups += eUserGroup.Name;
                }

                return MvcHtmlString.Create(groups);
            }
        }
        #endregion
    }
}